﻿Public Class frmcadastroCliente

    ' Variável de classe para controlar conexão como BD.
    Private cnn As New OleDb.OleDbConnection

    Public Sub New()

        InitializeComponent()

        ' Definir string de conexão com BD definida no módulo como pública.
        cnn.ConnectionString = strConexao

    End Sub

    Private Sub frmcadastroCliente_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        'TODO: This line of code loads data into the 'OrderDataSet.cliente' table. You can move, or remove it, as needed.
        Me.ClienteTableAdapter.Fill(Me.OrderDataSet.cliente)
        carregar_dados()

    End Sub

    Private Sub btnSalvar_Click(sender As Object, e As EventArgs) Handles btnSalvar.Click
        salvar_dados()
    End Sub

    Private Sub salvar_dados()
        ' Criar objeto para tratar comando SQL.
        Dim comando As New OleDb.OleDbCommand()

        ' Abrir conexão com BD.
        cnn.Open()

        Try
            ' Definir conexão em que se executará o comando SQL:
            comando.Connection = cnn

            ' SINTAXE: insert into tabela (campos) values (valores):
            If Me.lblEstadoBotao.Text = "Modo de inserção" Then
                comando.CommandText = "INSERT INTO Cliente " _
                    & "( nome,  sobrenome,  data_nascimento,  cpf, rg, cep, logradouro, numero, complemento, bairro, cidade, estado, telefone, ramal, celular, email ) values " _
                    & "( @nome,  @sobrenome,  @data_nascimento,  @cpf, @rg, @cep, @logradouro, @numero, @complemento, @bairro, @cidade, @estado, @telefone, @ramal, @celular, @email )"
            ElseIf Me.lblEstadoBotao.Text = "Modo de edição" Then
                comando.CommandText = "UPDATE Cliente " _
                    & "SET nome = @nome,  sobrenome = @sobrenome,  data_nascimento = @data_nascimento,  cpf = @cpf, rg = @RG, cep = @cep, logradouro = @logradouro, numero = @numero, complemento = @complemento, bairro = @bairro, cidade = @cidade, estado = @estado, telefone = @telefone, ramal = @ramal, celular = @celular, email = @email WHERE id = @id"
            End If
            ' Substituir parametros pelo valor desejado em cada parâmetro/campo.
            comando.Parameters.AddWithValue("@nome", Me.txtNomeCliente.Text)
            comando.Parameters.AddWithValue("@sobrenome", Me.txtSobreNomeCliente.Text)
            comando.Parameters.AddWithValue("@data_nascimento", Me.txtdatanascimentocliente.Text)
            comando.Parameters.AddWithValue("@cpf", Me.txtcpfcliente.Text)
            comando.Parameters.AddWithValue("@rg", Me.txtrgcliente.Text)
            comando.Parameters.AddWithValue("@cep", Me.txtCepCliente.Text)
            comando.Parameters.AddWithValue("@logradouro", Me.txtLogradouroCliente.Text)
            comando.Parameters.AddWithValue("@numero", Me.txtnumeroendcliente.Text)
            comando.Parameters.AddWithValue("@complemento", Me.txtcomplementocliente.Text)
            comando.Parameters.AddWithValue("@bairro", Me.txtbairrocliente.Text)
            comando.Parameters.AddWithValue("@cidade", Me.txtcidadecliente.Text)
            comando.Parameters.AddWithValue("@estado", Me.txtUfCliente.Text)
            comando.Parameters.AddWithValue("@telefone", Me.txtTelefoneCliente.Text)
            comando.Parameters.AddWithValue("@ramal", Me.txtramalcliente.Text)
            comando.Parameters.AddWithValue("@celular", Me.txtcelularcliente.Text)
            comando.Parameters.AddWithValue("@email", Me.txtEmailCliente.Text)
            If Me.lblEstadoBotao.Text = "Modo de edição" Then
                comando.Parameters.AddWithValue("@id", Me.txtEmailCliente.Text)
            End If

            comando.ExecuteNonQuery()       ' Executar o comando preparado.

        Catch ex As Exception
            MsgBox("Erro: " & ex.Message()) ' Em caso de erro (excessão), exibir o erro.
        Finally
            If ConnectionState.Open Then    ' Dando erro ou não, testar se a conexão está aberta para fecha-la.
                cnn.Close()                 ' Fechar conexão.
            End If
            carregar_dados()                ' Exibir os dados da tabela do BD.
        End Try
    End Sub

    Private Sub carregar_dados()
        Dim Sql As String = "select * from Cliente"  ' Instrução SQL.
        cnn.Open()                                  ' Abrir conexão com BD.
        Try
            'cnn = New OleDb.OleDbConnection(strConexao)

            ' Criar objeto (DataAdapter) para executar comando sql no BD.
            Dim da As OleDb.OleDbDataAdapter = New OleDb.OleDbDataAdapter(Sql, strConexao)

            ' Criar objeto (DataTable)
            Dim dt As DataTable = New DataTable

            ' Preencher o objeto DataTable com as informações do comando SQL do objeto DataAdapter:
            da.Fill(dt)

            ' Preencer o componente de tela (nosso DataGridView) com os dados do DataTable:
            dgvCliente.DataSource = dt
        Catch ex As Exception
            MsgBox("Erro: " & ex.ToString())
        Finally
            If ConnectionState.Open Then
                cnn.Close()
            End If
        End Try
    End Sub

    Private Sub dgvCliente_CellEnter(sender As Object, e As DataGridViewCellEventArgs) Handles dgvCliente.CellEnter

        If e.RowIndex > Me.dgvCliente.RowCount - 2 Then
            Exit Sub
        End If

        Me.txtNomeCliente.Text = Me.dgvCliente.Rows(e.RowIndex).Cells(1).Value
        Me.txtSobreNomeCliente.Text = Me.dgvCliente.Rows(e.RowIndex).Cells(2).Value
        Me.txtdatanascimentocliente.Text = Me.dgvCliente.Rows(e.RowIndex).Cells(3).Value
        Me.txtcpfcliente.Text = Me.dgvCliente.Rows(e.RowIndex).Cells(4).Value
        Me.txtrgcliente.Text = Me.dgvCliente.Rows(e.RowIndex).Cells(5).Value
        Me.txtCepCliente.Text = Me.dgvCliente.Rows(e.RowIndex).Cells(6).Value
        Me.txtLogradouroCliente.Text = Me.dgvCliente.Rows(e.RowIndex).Cells(7).Value
        Me.txtnumeroendcliente.Text = Me.dgvCliente.Rows(e.RowIndex).Cells(8).Value
        Me.txtcomplementocliente.Text = Me.dgvCliente.Rows(e.RowIndex).Cells(9).Value
        Me.txtbairrocliente.Text = Me.dgvCliente.Rows(e.RowIndex).Cells(10).Value
        Me.txtcidadecliente.Text = Me.dgvCliente.Rows(e.RowIndex).Cells(11).Value
        Me.txtUfCliente.Text = Me.dgvCliente.Rows(e.RowIndex).Cells(12).Value
        Me.txtTelefoneCliente.Text = Me.dgvCliente.Rows(e.RowIndex).Cells(13).Value
        Me.txtramalcliente.Text = Me.dgvCliente.Rows(e.RowIndex).Cells(14).Value
        Me.txtcelularcliente.Text = Me.dgvCliente.Rows(e.RowIndex).Cells(15).Value
        Me.txtEmailCliente.Text = Me.dgvCliente.Rows(e.RowIndex).Cells(16).Value
    End Sub

    Private Sub btnIncluir_Click(sender As Object, e As EventArgs) Handles btnIncluir.Click
        Me.lblEstadoBotao.Text = "Modo de inserção"
    End Sub

    Private Sub btnEditar_Click(sender As Object, e As EventArgs) Handles btnEditar.Click
        Me.lblEstadoBotao.Text = "Modo de edição"
    End Sub
End Class